/**
 * 集中式存储管理应用所有组件的状态
 */
import Vue from 'vue';
import Vuex from 'vuex';

Vue.use(Vuex);

const store = new Vuex.Store({
  state: {//存放组件之间共享的数据
    user: null
  },
  getters: {//实时监听state值的变化(最新状态)
    getUser(state) {
      return state.user;
    }
  },
  mutations: {//自定义改变state初始值的方法，这里面的参数除了state之外还可以再传额外的参数(变量或对象);
    setUser(state, userInfo) {
      state.user = userInfo;
    }
  },
  actions: {
    updateUser(context, userInfo) {//自定义触发mutations里函数的方法，context与store 实例具有相同方法和属性
      context.commit('setUser', userInfo);
    },
  }
});

export default store;
